Intro a Matplotlib

Matplotlib = Libreria para graficas cosas matematicas

Que es Matplotlib?

Matplotlin es un libreria para crear imagenes 2D de manera facil.

Checate mas en :

Para usar matplotlib, solo tiene que importar el modulo ..tambien te conviene importar numpy pues es muy util


In [1]:
import numpy as np # modulo de computo numerico
import matplotlib.pyplot as plt # modulo de graficas
import pandas as pd # modulo de datos
# esta linea hace que las graficas salgan en el notebook
%matplotlib inline

Crear graficas (plot)

Crear graficas es muy facil en matplotlib, si tienes una lista de valores X y otra y..solo basta usar :


In [ ]:

Podemos usar la funcion np.linspace para crear valores en un rango, por ejemplo si queremos 100 numeros entre 0 y 10 usamos:


In [ ]:

Y podemos graficar dos cosas al mismo tiempo:


In [ ]:

Que tal si queremos distinguir cada linea? Pues usamos legend(), de leyenda..tambien tenemos que agregarles nombres a cada plot


In [ ]:

Tambien podemos hacer mas cosas, como dibujar solamente los puntos, o las lineas con los puntos usando linestyle:


In [ ]:

Dibujando puntos (scatter)

Aveces no queremos dibujar lineas, sino puntos, esto nos da informacion de donde se encuentras datos de manera espacial. Para esto podemos usarlo de la siguiente manera:


In [ ]:

Pero ademas podemos meter mas informacion, por ejemplo dar colores cada punto, o darle tamanos diferentes:


In [ ]:

Histogramas (hist)

Los histogramas nos muestran distribuciones de datos, la forma de los datos, nos muestran el numero de datos de diferentes tipos:


In [ ]:

otro tipo de datos, tomados de una campana de gauss, es decir una distribucion normal:


In [ ]:


In [ ]:

Bases de datos en el internet

Aveces los datos que queremos se encuentran en el internet. Asumiendo que se encuentran ordenados y en un formato amigable siempre los podemos bajar y guardar como un DataFrame.

Por ejemplo:

Gapminder es una pagina con mas de 500 conjunto de daatos relacionado a indicadores globales como ingresos, producto interno bruto (PIB=GDP) y esperanza de vida.

Aqui bajamos la base de datos de esperanza de vida, lo guardamos en memoria y lo lodeamos como un excel:

Ojo! Aqui usamos .head() para imprimir los primeros 5 renglones del dataframe pues son gigantescos los datos.


In [9]:
xurl="http://spreadsheets.google.com/pub?key=phAwcNAVuyj2tPLxKvvnNPA&output=xls"
df=pd.read_excel(xurl)
print("Tamano completo es %s"%str(df.shape))
df.head()


Tamano completo es (260, 217)
Out[9]:
Life expectancy with projections. Yellow is IHME 1800 1801 1802 1803 1804 1805 1806 1807 1808 ... 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015
0 Abkhazia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 Afghanistan 28.2110 28.200753 28.190507 28.18026 28.170013 28.159767 28.14952 28.139273 28.129027 ... 53.2 53.6 54.0 54.5 54.8 55.2 55.5 56.2 56.91 57.63
2 Akrotiri and Dhekelia NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3 Albania 35.4000 35.400000 35.400000 35.40000 35.400000 35.400000 35.40000 35.400000 35.400000 ... 74.5 74.7 74.9 75.0 75.2 75.5 75.7 75.8 75.90 76.00
4 Algeria 28.8224 28.822400 28.822400 28.82240 28.822400 28.822400 28.82240 28.822400 28.822400 ... 74.8 75.0 75.3 75.6 75.9 76.1 76.2 76.3 76.40 76.50

5 rows × 217 columns

Arreglando los Datos

Head nos permite darle un vistazo a los datos... asi a puro ojo vemos que las columnas son anios y los renglones los paises...ponder reversar esto con transpose, pero tambien vemos que esta con indices enumerados, prefeririamos que los indices fueran los paises, entonces los cambiamos y tiramos la columna que ya no sirve...al final un head para ver que todo esta bien... a este juego de limpiar y arreglar datos se llama "Data Wrangling"


In [10]:
df = df.rename(columns={'Life expectancy with projections. Yellow is IHME': 'Life expectancy'})
df.index=df['Life expectancy']
df=df.drop('Life expectancy',axis=1)
df=df.transpose()
df.head()


Out[10]:
Life expectancy Abkhazia Afghanistan Akrotiri and Dhekelia Albania Algeria American Samoa Andorra Angola Anguilla Antigua and Barbuda ... Vietnam Virgin Islands (U.S.) North Yemen (former) South Yemen (former) Yemen Yugoslavia Zambia Zimbabwe Åland South Sudan
1800 NaN 28.211000 NaN 35.4 28.8224 NaN NaN 26.98 NaN 33.536 ... 32 33.403 NaN NaN 23.387 NaN 32.6 33.7 NaN 26.665
1801 NaN 28.200753 NaN 35.4 28.8224 NaN NaN 26.98 NaN 33.536 ... 32 33.403 NaN NaN 23.387 NaN 32.6 33.7 NaN 26.665
1802 NaN 28.190507 NaN 35.4 28.8224 NaN NaN 26.98 NaN 33.536 ... 32 33.403 NaN NaN 23.387 NaN 32.6 33.7 NaN 26.665
1803 NaN 28.180260 NaN 35.4 28.8224 NaN NaN 26.98 NaN 33.536 ... 32 33.403 NaN NaN 23.387 NaN 32.6 33.7 NaN 26.665
1804 NaN 28.170013 NaN 35.4 28.8224 NaN NaN 26.98 NaN 33.536 ... 32 33.403 NaN NaN 23.387 NaN 32.6 33.7 NaN 26.665

5 rows × 260 columns

Entonces ahora podemos ver la calidad de vida en Mexico atravez del tiempo:


In [ ]:
df['Mexico'].plot()
print("== Esperanza de Vida en Mexico ==")

de esta visualizacion vemos que la caldiad ha ido subiendo apartir de 1900, ademas vemos mucho movimiento entre 1890 y 1950, justo cuando habia muchas guerras en Mexico.

Tambien podemos seleccionar un rango selecto de años, vemos que este rango es interesante entonces


In [ ]:
subdf=df[ df.index >= 1890 ]
subdf=subdf[ subdf.index <= 1955 ]
subdf['Mexico'].plot()
plt.title("Esperanza de Vida en Mexico entre 1890 y 1955")
plt.show()

o sin tanto rollo, podemos restringuir el rango de nuestra grafica con xlim (los limites del eje X)


In [ ]:
df['Mexico'].plot()
plt.xlim(1890,1955)
plt.title("Esperanza de Vida en Mexico entre 1890 y 1955")
plt.show()

Tambien es importante ver como esto se compara con otros paises, podemos comparar con todo Norteamerica:


In [ ]:
df[['Mexico','United States','Canada']].plot()
plt.title("Esperanza de Vida en Norte-America")
plt.show()

Ejercicios:

  • Compara la esperanza de vida en Latino America (o al menos algunos paises de ella).
  • Solo grafica los años entre 1900 y 2000, tambien 2000-2014.
  • Quita los paises que tienen valores 'Nan', checa la funcion .dropna().
  • Saca estadisticas para paises Latino Americanos.
  • Lo mismo de arriba para diferentes periodos 1800-1900, 1900-2000, 2000-2014

In [ ]: